#include <iostream>
using namespace std;

class Solution {
public:
    long Convert(const string& s)
    {
        if (s.empty())
        {
            return 0;
        }
        long count = 0;
        for (long i = 1, j = 1; s.begin() <= s.end() - i; i++, j = j * 10)
        {
            if (i > 10)
            {
                count = 0x80000000;
                break;
            }
            long temp =( *(s.end() - i)-'0')*j;
            count += temp;
            if (s.begin() == s.end() - i)
            {
                break;
            }
        }
        if (count >= 0x80000000)
        {
            return 0x80000000;
        }

        return count;
    }

   /* void reverse(string& s)
    {
        for (int i = 0; s.begin() + i < s.end() - i - 1; i++)
        {
            swap(*(s.begin() + i), *(s.end() - i - 1));
        }
    }*/

    int myAtoi(string str) {
        string str1;
        char sgin = '+';
        for (int i = 0,non0=0,start=0; str.begin()+i !=str.end(); i++)
        {
            if (!isspace(*(str.begin() + i))&& !(*(str.begin()+i) == '+' || *(str.begin() + i) == '-')&&!isdigit(*(str.begin()+i)))
            {
                return 0;
            }
            if (isdigit(*(str.begin() + i))|| *(str.begin() + i) == '+' || *(str.begin() + i) == '-')
            {
                
                if ((*(str.begin() + i) == '0'|| !isdigit(*(str.begin() + i)))&& non0 == 0)
                {
                    if (!isdigit(*(str.begin() + i)))
                    {
                        sgin = *(str.begin() + i);
                    }
                }
                else
                {
                    non0 = 1;
                    str1.push_back(*(str.begin() + i));
                }
                if (str.begin()+i>=str.end()-1||!isdigit(*(str.begin() + i + 1)))
                {
                    break;
                }
            }
        }
        long count = Convert(str1);
        if (sgin == '-')
        {
            count = -count;
        }
        if(count==0x80000000)
            return count-1;
        return count;
    }
};

int main() {
    string s = "+0 123";
    Solution scl;
    int count = scl.myAtoi(s);
}